package ufc.quixada.petti.service;

import java.util.List;

import ufc.quixada.petti.dao.AtividadeDAO;
import ufc.quixada.petti.infra.SimplesEntityManager;
import ufc.quixada.petti.model.Atividade;


public class AtividadeService {

	private AtividadeDAO dao;

	private SimplesEntityManager simpleEntityManager;

	public AtividadeService() {

	}

	public AtividadeService(SimplesEntityManager simpleEntityManager) {
		this.simpleEntityManager = simpleEntityManager;
		dao = new AtividadeDAO(simpleEntityManager.getEntityManager());
	}

	public void save(Atividade atividade) {

		try {
			simpleEntityManager.beginTransaction();
			dao.save(atividade);
			simpleEntityManager.commit();
		} catch (Exception e) {
			e.printStackTrace();
			simpleEntityManager.rollBack();
		}

	}

	public List<Atividade> findAll() {
		return dao.findAll();
	}

	public void atualizar(Atividade atividade) {

		try {
			simpleEntityManager.beginTransaction();
			dao.update(atividade);
			simpleEntityManager.commit();
		} catch (Exception e) {
			e.printStackTrace();
			simpleEntityManager.rollBack();
		} finally {
			simpleEntityManager.close();
		}
	}

	public void remover(Atividade atividade) {
		try {
			simpleEntityManager.beginTransaction();
			dao.delete(atividade);
			simpleEntityManager.commit();
		} catch (Exception e) {
			e.printStackTrace();
			simpleEntityManager.rollBack();
		} finally {
			simpleEntityManager.close();
		}
	}

	public Atividade encontrarPorId(Long id) {
		Atividade atividade = null;
		try {
			simpleEntityManager.beginTransaction();
			atividade = dao.getById(id);
			simpleEntityManager.commit();
		} catch (Exception e) {
			e.printStackTrace();
			simpleEntityManager.rollBack();
		} finally {
			simpleEntityManager.close();
		}
		return atividade;
	}

	public Atividade removerPorId(Long id) {
		Atividade atividade = null;
		try {
			simpleEntityManager.beginTransaction();
			atividade = dao.getById(id);
			dao.delete(atividade);
			simpleEntityManager.commit();
		} catch (Exception e) {
			e.printStackTrace();
			simpleEntityManager.rollBack();
		} finally {
			simpleEntityManager.close();
		}
		return atividade;
	}

	public Atividade encontrarPorNome(String nome) {
		Atividade atividade = null;
		try {
			simpleEntityManager.beginTransaction();
			atividade = dao.getByName(nome);
			simpleEntityManager.commit();
		} catch (Exception e) {
			e.printStackTrace();
			simpleEntityManager.rollBack();
		} finally {
			simpleEntityManager.close();
		}
		return atividade;
	}

}
